home *** CD-ROM | disk | FTP | other *** search
- #!/sbin/runscript
- # Copyright 1999-2005 Gentoo Foundation
- # Distributed under the terms of the GNU General Public License v2
-
- depend() {
- use clock hostname
- need localmount
- before logger
- }
-
- start() {
- [[ ${BOOT} != "yes" ]] && return 0
-
- #
- # Put a nologin file in /etc to prevent people from logging in before
- # system startup is complete.
- #
- if [[ ${DELAYLOGIN} == "yes" ]] ; then
- echo "System bootup in progress - please wait" > /etc/nologin
- cp /etc/nologin /etc/nologin.boot &> /dev/null
- fi
-
- if [[ -e /etc/sysctl.conf ]] ; then
- ebegin "Configuring kernel parameters"
- /sbin/sysctl -q -p /etc/sysctl.conf
- eend 0
- fi
-
- if [[ -z ${CDBOOT} ]] && ! touch /var/run/.keep 2> /dev/null ; then
- ewarn "Skipping /var and /tmp initialization (ro root?)"
- return 0
- fi
-
- if [[ -x /sbin/env-update.sh ]] ; then
- ebegin "Updating environment"
- /sbin/env-update.sh -u > /dev/null
- eend 0
- fi
-
- #
- # Take care of random stuff [ /var/lock | /var/run | pam ]
- #
-
- if [[ -d /var/lib/net-scripts/state ]] ; then
- ebegin "Cleaning /var/lib/net-scripts/state"
- rm -rf /var/lib/net-scripts/state/*
- eend 0
- fi
-
- ebegin "Cleaning /var/lock, /var/run"
- rm -rf /var/run/console.lock /var/run/console/*
-
- if [[ -z ${CDBOOT} ]] ; then
- #
- # Clean up any stale locks.
- #
- find /var/lock -type f -print0 | xargs -0 rm -f --
- #
- # Clean up /var/run and create /var/run/utmp so that we can login.
- #
- for x in $(find /var/run/ ! -type d ! -name utmp ! -name innd.pid ! -name random-seed) ; do
- local daemon=${x##*/}
- daemon=${daemon%*.pid}
- # Do not remove pidfiles of already running daemons
- if [[ -z $(ps --no-heading -C "${daemon}") ]] ; then
- if [[ -f ${x} || -L ${x} ]] ; then
- rm -f "${x}"
- fi
- fi
- done
- fi
-
- # Reset pam_console permissions if we are actually using it
- if [[ -x /sbin/pam_console_apply && ! -c /dev/.devfsd && \
- -n $(grep -v -e '^[[:space:]]*#' /etc/pam.d/* | grep 'pam_console') ]] ; then
- /sbin/pam_console_apply -r
- fi
-
- # Create the .keep to stop portage from removing /var/lock
- > /var/lock/.keep
- eend 0
-
- #
- # Clean up /tmp directory
- #
- if [[ -z ${CDBOOT} ]] && [[ -d /tmp ]] ; then
- cd /tmp
- if [[ ${WIPE_TMP} == "yes" ]] ; then
- ebegin "Wiping /tmp directory"
- # This eval stuff sucks, so if someone has a better *working*
- # solution, please file a bug at http://bugs.gentoo.org/
- # Originally ripped from Debian init scripts
- local exceptions="
- '!' -name . -a
- '!' '(' -uid 0 -a
- '('
- -path './lost+found/*' -o
- -path './quota.user/*' -o
- -path './aquota.user/*' -o
- -path './quota.group/*' -o
- -path './aquota.group/*' -o
- -path './.journal/*'
- ')'
- ')'"
- # First kill most files, then kill empty dirs
- eval find . -xdev -depth ${exceptions} ! -type d -print0 | xargs -0 rm -f --
- eval find . -xdev -depth ${exceptions} -type d -empty -exec rmdir '{}' \\';'
- eend 0
- else
- ebegin "Cleaning /tmp directory"
- (
- rm -f /tmp/.X*-lock /tmp/esrv* /tmp/kio* /tmp/jpsock.* /tmp/.fam*
- rm -rf /tmp/.esd* /tmp/orbit-* /tmp/ssh-* /tmp/ksocket-* /tmp/.*-unix
- ) &> /dev/null
- eend 0
- fi
-
- (
- # Make sure our X11 stuff have the correct permissions
- mkdir -p /tmp/.{ICE,X11}-unix
- chown 0:0 /tmp/.{ICE,X11}-unix
- chmod 1777 /tmp/.{ICE,X11}-unix
- [[ -x /sbin/restorecon ]] && restorecon /tmp/.{ICE,X11}-unix
- ) &> /dev/null
- fi
-
- #
- # Create an 'after-boot' dmesg log
- #
- touch /var/log/dmesg
- chmod 640 /var/log/dmesg
- dmesg > /var/log/dmesg
-
- #
- # Check for /etc/resolv.conf, and create if missing
- #
- [[ -f /etc/resolv.conf ]] || touch /etc/resolv.conf &> /dev/null
- }
-
-
- # vim:ts=4
-